The order of error checking in simple PUT requests and PUT requests using select_attr can create inconsistent behaviors. We have agreed that a PUT request should be processed as a request to completely replace a resource. Immutable and non-consumer mutable attributes must be included in the body of such requests (to do otherwise would indicate a desire to delete them), but must match the values of the existing resource.
This begs the question of how to process the inclusion of immutable and non-consumer mutable attributes in the value of the 'select_attr' attribute. Naively one could treat the inclusion of such attributes as an error without regards to the value of those attributes in the request body. Doing this, however, runs counter to our notion of treating select_attr as a mask. Regardless of whether select_attr is used or not, the treatment of immutable and non-consumer mutable attributes should be consist across all HTTP methods, including PUT.